/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package vista.personas.pacientes;

import java.awt.event.WindowAdapter;
import java.util.Iterator;
import java.util.List;
import javax.swing.JOptionPane;
import modelo.personas.pacientes.GestorPaciente;
import modelo.personas.pacientes.Pariente;
import util.components.IGestorABM;

/**
 *
 * @author Raul
 */
public class GestorTablaParientes implements IGestorABM{
    private EditorPacienteDlg formulario;
    private GestorPaciente gestorModelo;

    public GestorTablaParientes(GestorPaciente gestorModelo, EditorPacienteDlg formulario) {
        this.gestorModelo = gestorModelo;
        this.formulario = formulario;
    }

    public EditorPacienteDlg getFormulario() {
        return formulario;
    }
    
    @Override
    public void registrarNuevaEntidad() {
        GestorVistaParienteDlg gestorEditor = new GestorVistaParienteDlg(gestorModelo);
        gestorEditor.abrirFormulario();
        gestorEditor.getFormulario().addWindowListener(new GestorTablaParientes.MyWindowListener());
    }

    @Override
    public void modificar(Object modelo) {
        GestorVistaParienteDlg gestorEditor = new GestorVistaParienteDlg(gestorModelo,modelo);
        gestorEditor.abrirFormulario();
        gestorEditor.getFormulario().addWindowListener(new GestorTablaParientes.MyWindowListener());
    }

    @Override
    public void eliminar(Object modelo) {
        gestorModelo.eliminarPariente(modelo);
    }

    @Override
    public void imprimir(List datos) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public int mostrarDialogoDeEliminacion() {
        Object[] options = {"Eliminar", "Cancelar"};
        int seleccion = JOptionPane.showOptionDialog(getFormulario(),
                "Esta seguro que desea eliminar el pariente seleccionado",
                "Confirmar eliminaci\u00f3n",
                JOptionPane.YES_NO_OPTION,
                JOptionPane.WARNING_MESSAGE,
                null,
                options,
                options[1]);
        return seleccion;
    }

    @Override
    public void cargarModeloComponente() {
        Object[] titulos={ "", "Parentesco","Nombre", "Apellido", "Documento", "Sexo"};
        getFormulario().cargarTitulosTabla(titulos);
    }

    @Override
    public void cargarDatos(java.util.Collection datos) {
        Iterator i=datos.iterator();
        while(i.hasNext()){
            Pariente p = (Pariente)i.next();
            Object[] fila={p,
                p.getParentesco(),
                p.getPersona().getNombre(),
                p.getPersona().getApellido(),
                p.getPersona().getDocumento(),
                p.getPersona().getSexo()};
            getFormulario().agregarFilaTabla(fila);
        }
    }

    public void cargarParientes() {
        cargarModeloComponente();
        cargarDatos(gestorModelo.getModelo().getParientes());
    }
    
    class MyWindowListener extends WindowAdapter {
        @Override
        public void windowClosed(java.awt.event.WindowEvent e){
            cargarParientes();
        }
    }

}
